﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace StandAlone
{
    public partial class frm_Articulos_Proveedores : Form
    {
        bool flag = false;
        public static string Id_Articulo;
        public static string Articulo;

        public frm_Articulos_Proveedores()
        {
            InitializeComponent();
        }

        private void frm_Articulos_Proveedores_Load(object sender, EventArgs e)
        {
            label2.Text = Articulo.ToString();
            Cargar_Lst();
        }

        private void Cargar_Lst()
        {
            string Consulta = "SELECT (Proveedores.Nombre + ' ' + Proveedores.Apellido) AS Nombre_Completo, COUNT(Proveedores_x_Articulos.Id_Articulo) AS Existe"
            + " FROM Proveedores INNER JOIN Proveedores_x_Articulos ON Proveedores.Id_Proveedor = Proveedores_x_Articulos.Id_Proveedor"
            + " WHERE Id_Articulo = " + "'" + Id_Articulo + "'" + " AND Proveedores.Eliminado = 0 GROUP BY (Proveedores.Nombre + ' ' + Proveedores.Apellido) UNION ALL SELECT (Proveedores.Nombre + ' ' + Proveedores.Apellido), 0 as Existe"
            + " FROM Proveedores WHERE id_Proveedor not in"
            + " (SELECT id_Proveedor FROM Proveedores_x_Articulos WHERE Id_Articulo= " + "'" + Id_Articulo + "'" + " ) order by Nombre_Completo";

            Funciones.Cargar_Lst(Consulta, "Nombre_Completo", "Existe", ref lst_Proveedores);
        }

        private string Buscar_Codigo_Proveedor()
        {
            string Consulta;
            Consulta = "SELECT Proveedores.Id_Proveedor AS ID FROM Proveedores WHERE (Nombre + ' ' + Apellido) = '" + lst_Proveedores.Text.ToString() + "'";
            DataSet ds = new DataSet();
            ds = Funciones.Read_DataBase(Consulta);
            return ds.Tables[0].Rows[0]["ID"].ToString();
        }


        private void lst_Proveedores_SelectedIndexChanged(object sender, EventArgs e)
        {
            txt_Costo.Text = "";
            if (lst_Proveedores.SelectedIndex != -1)
            {
                flag = true;
                if (lst_Proveedores.SelectedValue.ToString() == (1).ToString())
                {
                    rb_Autorizado.Checked = true;
                    Cargar_Costo();
                }
                else
                {
                    rb_NoAutorizado.Checked = true;
                }
                flag = false;
            }
        }

        private void Cargar_Costo()
        {
            DataSet ds = new DataSet();
            string id_Proveedor = Buscar_Codigo_Proveedor();
            string Consulta = "SELECT Proveedores_x_Articulos.Costo AS Costo FROM Proveedores_x_Articulos WHERE "
                + "Proveedores_x_Articulos.Id_Articulo = '" + Id_Articulo + "' AND Proveedores_x_Articulos.Id_Proveedor = '" + id_Proveedor
                + "'";
            ds = Funciones.Read_DataBase(Consulta);

            txt_Costo.Text = ds.Tables[0].Rows[0]["Costo"].ToString(); 
        }

        private void btn_Cerrar_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.Cancel;
        }

        private bool Buscar_Si_Existe_Proveedor_Articulo()
        { 
             DataSet ds = new DataSet();
                        string id_Proveedor = Buscar_Codigo_Proveedor();
                        string Consulta = "SELECT Count(Proveedores_x_Articulos.Id_Articulo) AS Existe FROM Proveedores_x_Articulos WHERE "
                            + "Proveedores_x_Articulos.Id_Articulo = '" + Id_Articulo + "' AND Proveedores_x_Articulos.Id_Proveedor = '" + id_Proveedor
                            + "'";
                        ds = Funciones.Read_DataBase(Consulta);
                        if (Convert.ToInt32(ds.Tables[0].Rows[0]["Existe"]) == 0)
                            return false;
                        else
                            return true;

        }
        
        private void btn_Actualizar_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {
                if (txt_Costo.Text != "")
                {
                    if (rb_Autorizado.Checked == true)
                    {
                        if (Buscar_Si_Existe_Proveedor_Articulo() == true)
                        {
                            string Id_Proveedor = Buscar_Codigo_Proveedor();
                            //Actualizar Registro.
                            string Consulta = "UPDATE Proveedores_x_Articulos SET Costo= '" + txt_Costo.Text.ToString().Replace(',', '.') + "'"
                                + " WHERE Proveedores_x_Articulos.Id_Proveedor = '" + Id_Proveedor + "' AND Proveedores_x_Articulos.Id_Articulo = '"
                                + Id_Articulo + "'";

                            Funciones.Insert_DataBase(Consulta);
                        }
                        else
                        {
                            string Id_Proveedor = Buscar_Codigo_Proveedor();
                            //Agregar Registro.
                            string Consulta = "INSERT INTO Proveedores_x_Articulos (Id_Proveedor, Id_Articulo, Costo)"
                                + " SELECT '" + Id_Proveedor + "', '" + Id_Articulo + "', '" + txt_Costo.Text.ToString().Replace(',', '.') + "'";
                            Funciones.Insert_DataBase(Consulta);
                        }
                    }
                    else
                    {
                        //Borrar Registro.
                        string Id_Proveedor = Buscar_Codigo_Proveedor();
                        string Consulta = "DELETE FROM Proveedores_x_Articulos WHERE Id_Proveedor = '" + Id_Proveedor + "' AND Id_Articulo = '" + Id_Articulo + "'";
                        Funciones.Insert_DataBase(Consulta);
                    }
                    Cargar_Lst();
                }
                else
                {
                    MessageBox.Show("Deber Agregar un Costo", "Asignar Proveedor", MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
                }
            }
        }

        private void txt_Costo_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
            if ((e.KeyChar >= 48) && (e.KeyChar <= 57) || (e.KeyChar == 44))
                e.Handled = false;
            if (e.KeyChar == 8)
                e.Handled = false;
        }

        private void rb_Autorizado_CheckedChanged(object sender, EventArgs e)
        {
            if (rb_Autorizado.Checked == false)
            {
                txt_Costo.Enabled = false;
                txt_Costo.Text = "";
                txt_Costo.BackColor = Color.Silver;
            }
            else
            {
                txt_Costo.Enabled = true;
                txt_Costo.BackColor = Color.White;
            }
        }
    }
}
